<?php
namespace Framework;
use PDO;



class Database {
    public $conn;

    /**
     * Database 类构造器
     * 
     * @param array $config
     */
    public function __construct($config) {
        $dsn = "mysql:host={$config['host']};port={$config['port']};dbname={$config['dbname']}";
        $options = [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE =>
            PDO::FETCH_OBJ
        ];
        try {
            $this->conn = new PDO($dsn, $config['username'], $config['password'], $options);
            //echo "连接成功！"; // 测试完毕后删去
        } catch (\PDOException $e) {
            throw new \Exception("数据库连接失败: {$e->getMessage()}");
        }
    }
    /**
     * 执行数据库请求
     * 
     * @param string $query
     * @return PDOStatement
     * @throws PDOException
     */
    public function query($query,$params=[]){
        try{
            $sth =$this ->conn->prepare($query);
            foreach ($params as $param=>$value){
                $sth->bindValue(':' . $param,$value);
            }
            $sth ->execute();
            return $sth;

        }catch(\PDOExeption $e){
            throw new \Exception("数据库请求执行失败：{$e->getMessage()}");
        }
    }
}
